package Lee_code;

/**
 * @author blh
 * @date 2024年07月16日 16:31
 */
public class Lee_33_716 {
    public int search(int[] nums, int target) {
        int len = nums.length;
        int l = 0, r = len - 1;
        int mid;
        // 将数组一分为2, 一定是一个有序 一个无序
        while (l <= r) {
            mid = l + (r - l) / 2;
            if (nums[mid] == target) {
                return mid;
            }
            // 如果在左边的有序中
            if (nums[mid] >= nums[0]) {
                if (nums[mid] > target && target >= nums[0]) {
                    r = mid - 1;
                } else {
                    l = mid + 1;
                }
            } else {
                // 在右边的有序中
                if (nums[mid] < target && target <= nums[len - 1]) {
                    l = mid + 1;
                } else {
                    r = mid - 1;
                }
            }
        }
        return -1;
    }
}
